package com.ruoyi.modbus.handler;

import io.netty.channel.ChannelHandlerContext;
import io.netty.channel.ChannelInboundHandlerAdapter;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class ModbusTcpHandler extends ChannelInboundHandlerAdapter {
    // 日志记录器，用于记录处理器相关的信息
    private static final Logger logger = LoggerFactory.getLogger(ModbusTcpHandler.class);

    @Override
    public void channelActive(ChannelHandlerContext ctx) throws Exception {
        // 当通道连接成功并处于活跃状态时，记录日志提示
        logger.info("已连接到 Modbus Slave 的网络通道");
        // 继续传递通道活跃事件
        ctx.fireChannelActive();
    }

    @Override
    public void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception {
        // 当通道接收到消息时，记录接收到的消息
        logger.info("收到来自 Modbus Slave 的消息: {}", msg);
        // 继续传递读取到的消息
        ctx.fireChannelRead(msg);
    }

    @Override
    public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) throws Exception {
        // 当通道发生异常时，记录异常信息
        logger.error("通道发生异常: ", cause);
        // 关闭通道
        ctx.close();
    }
}